package cn.iocoder.yudao.module.digital.controller.admin.projects.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 项目新增/修改 Request VO")
@Data
public class ProjectsSaveReqVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32702")
    private Integer id;

    @Schema(description = "项目名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
    @NotEmpty(message = "项目名字不能为空")
    private String name;

    @Schema(description = "项目类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "项目类型不能为空")
    private Integer type;

    @Schema(description = "主办方（字典）")
    private Integer organizer;

    @Schema(description = "主办方（不在字典里面）")
    private String organizerOther;

    @Schema(description = "级别（省级，国家级，校级）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "级别（省级，国家级，校级）不能为空")
    private Integer level;

    @Schema(description = "第一作者，负责人", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "第一作者，负责人不能为空")
    private String author;

    @Schema(description = "成员", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "成员不能为空")
    private String member;

    @Schema(description = "贡献率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "贡献率不能为空")
    private String rate;

    @Schema(description = "立项时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "立项时间不能为空")
    private LocalDateTime projectStartTime;

    @Schema(description = "结项时间")
    private LocalDateTime projectEndTime;

    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "状态不能为空")
    private Integer status;

    @Schema(description = "佐证地址", example = "https://www.iocoder.cn")
    private List<String> evidenceUrl;

    @Schema(description = "备注", example = "你说的对")
    private String remark;

    @Schema(description = "保留字段")
    private String reserved1;

    @Schema(description = "保留字段")
    private String reserved2;

    @Schema(description = "保留字段")
    private String reserved3;

    @Schema(description = "保留字段")
    private String reserved4;

    @Schema(description = "保留字段")
    private String reserved5;

}